#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
int main()
{
    //声明文件描述符
    int fd1, fd2;
    char buf[4]; //开辟缓冲区
    //两次打开同一个文件，得到不同的文件描述符，验证两个文件描述符是相互独立的
    fd1 = open("file.test", O_RDONLY);
    fd2 = open("file.test", O_RDONLY);
    //输出文件描述符，确保文件描述符不是同一个
    printf("fd1 = %d , fd2 = %d\n", fd1, fd2);
    //通过fd1向后移动4字节
    lseek(fd1, 4, SEEK_SET);
    //读fd2，如果两文件描述符独立，则读取到的数据应该是0123，否则读取到的数据是4567
    read(fd2, buf, sizeof(buf));
    //打印读取到的数据
    printf("fd2 : %s\n", buf);

    /*验证fd2：类似的方法*/
    lseek(fd2, 4, SEEK_SET);     //这个移动不会影响fd1
    read(fd1, buf, sizeof(buf)); //由于前面读取fd1已经将文件指针移到了4位置，因此此时读出的就是4567
    //打印读出的数据
    printf("fd1 : %s\n", buf);
    //关闭文件描述符
    close(fd1);
    close(fd2);
    return 0;
}